# -*- coding: utf-8 -*-
"""
@Time: 2025/1/10 11:41
@Auth: Zhang Hongxing
@File: scoring_model.py
@Note:   
"""

import re
from backend.services.analysis_service import preprocess_text

# 【接口3.1.1】POST /model/score   # 模型评分
def score_essay(text):
    """
    对输入的英文作文进行简单的自动评分
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）和详细的评分指标
    """
    try:
        # 使用预处理函数对文本进行预处理
        tokens = preprocess_text(text)
        if tokens is None or len(tokens) == 0:
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        # 1. 计算总单词数
        total_words = len(tokens)

        # 2. 计算句子数量（通过标点符号推测句子）
        sentences = re.split(r'[.!?]', text)
        sentences = [s.strip() for s in sentences if s.strip()]
        total_sentences = len(sentences)

        # 3. 计算平均单词长度
        avg_word_length = sum(len(word) for word in tokens) / total_words

        # 4. 计算词汇多样性（去重后单词占比）
        unique_words = set(tokens)
        lexical_diversity = len(unique_words) / total_words

        # 5. 根据指标打分
        word_score = min(50, total_words)  # 单词数得分（满分50，50个单词即可得满分）
        sentence_score = min(30, total_sentences * 3)  # 句子数得分（满分30，每句3分）
        diversity_score = min(20, lexical_diversity * 20)  # 词汇多样性得分（满分20）

        # 综合评分
        total_score = word_score + sentence_score + diversity_score

        # 返回评分结果
        return {
            "score": round(total_score, 2),
            "message": "评分成功",
            "details": {
                "total_words": total_words,
                "total_sentences": total_sentences,
                "avg_word_length": round(avg_word_length, 2),
                "lexical_diversity": round(lexical_diversity, 2),
                "word_score": round(word_score, 2),
                "sentence_score": round(sentence_score, 2),
                "diversity_score": round(diversity_score, 2),
            },
        }

    except Exception as e:
        print("【3.1.1 模型评分】作文评分失败：", e)
        return {"score": 0, "message": "评分失败，发生错误", "details": None}

import os
import json
from openai import OpenAI  # 使用新版的 OpenAI 客户端

# 配置 API 密钥和基础 URL
API_SECRET_KEY = "sk-zk2fddcc2c2a27442fa13fe2bc82660ba0367e6ade4eea1f"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)


def score_essay_with_chatgpt(text,language):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        # 设计提示词（Prompt）
        prompt = f"""
        请对以下英文作文进行评分，并根据以下四个大项评分，每个大项满分 25 分，总分为 100 分。请确保每个大项的评分由 4 个具体小项组成，并分别给出每个小项的得分。

        1. **词汇（0-25 分）**
           - 词汇丰富度（0-6.25 分）：使用的词汇是否多样，是否避免了重复使用简单词汇。
           - 词汇准确性（0-6.25 分）：词汇使用是否准确，是否符合语境。
           - 词汇难度（0-6.25 分）：是否使用了适当的高级词汇或专业术语。
           - 词汇搭配（0-6.25 分）：词汇的搭配是否自然，是否符合语言习惯。

        2. **句子（0-25 分）**
           - 句子结构（0-6.25 分）：句子结构是否多样，是否使用了简单句、复合句和复杂句。
           - 句子流畅性（0-6.25 分）：句子是否流畅，是否易于理解。
           - 句子长度（0-6.25 分）：句子长度是否适中，是否避免了过长或过短的句子。
           - 语法正确性（0-6.25 分）：句子是否符合语法规则，是否有语法错误。

        3. **篇章结构（0-25 分）**
           - 段落划分（0-6.25 分）：段落划分是否合理，是否每个段落都有一个明确的主题。
           - 段落连贯性（0-6.25 分）：段落之间是否有适当的过渡，是否逻辑连贯。
           - 篇章逻辑（0-6.25 分）：整篇文章的逻辑是否清晰，是否有明确的引言、主体和结论。
           - 篇章完整性（0-6.25 分）：文章是否完整，是否有明确的开始、发展和结尾。

        4. **内容相关（0-25 分）**
           - 内容相关性（0-6.25 分）：内容是否紧扣主题，是否偏离了题目要求。
           - 内容深度（0-6.25 分）：内容是否有深度，是否提供了足够的细节和支持。
           - 内容新颖性（0-6.25 分）：内容是否有新意，是否提供了独特的观点或见解。
           - 内容逻辑性（0-6.25 分）：内容是否逻辑严密，是否有合理的论证过程。

        **请返回 JSON 格式的评分结果，格式如下：**
        
        {{
            "vocabulary_score": {{
                "total": 词汇总得分,
                "richness": 词汇丰富度得分,
                "accuracy": 词汇准确性得分,
                "difficulty": 词汇难度得分,
                "collocation": 词汇搭配得分
            }},
            "sentence_score": {{
                "total": 句子总得分,
                "structure": 句子结构得分,
                "fluency": 句子流畅性得分,
                "length": 句子长度得分,
                "grammar": 语法正确性得分
            }},
            "structure_score": {{
                "total": 篇章结构总得分,
                "paragraph_division": 段落划分得分,
                "coherence": 段落连贯性得分,
                "logic": 篇章逻辑得分,
                "completeness": 篇章完整性得分
            }},
            "content_score": {{
                "total": 内容相关总得分,
                "relevance": 内容相关性得分,
                "depth": 内容深度得分,
                "novelty": 内容新颖性得分,
                "logicality": 内容逻辑性得分
            }},
           "overall_score": "总评分",
            "excellent_expressions": [ {{ "quote": "原文摘录1", "reason": "使用{language}说明优秀原因" }}, 
            {{ "quote": "原文摘录2", "reason": "使用{language}说明优秀原因" }},
             {{ "quote": "原文摘录3", "reason": "使用{language}说明优秀原因" }} ], 
             "suggestions": [ "具体修改建议1", "具体修改建议2", "具体修改建议3" ] }}
【作文内容】 {text}
        

        此外，请提供 **三处优秀表达**（好词好句），以及 **三条修改建议**（用中文回答）。

        **作文内容：**
        {text}
        """

        # 调用 GPT 模型
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "你是一个专业的英文作文评分助手。"},
                {"role": "user", "content": prompt}
            ],
            max_tokens=700,
            temperature=0.7,
        )
        try:
            # 调用 GPT 模型
            response = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=[
                    {"role": "system", "content": "你是一个专业的作文评分助手。"},
                    {"role": "user", "content": prompt}
                ],
                max_tokens=700,
                temperature=0.7,
            )

            result_text = response.choices[0].message.content
            print("【GPT评分】模型返回内容：", result_text)  # 调试日志

            # 尝试直接解析 JSON
            try:
                result = json.loads(result_text)
            except json.JSONDecodeError:
                # 如果失败，尝试提取 {...} 部分
                json_match = re.search(r'\{.*\}', result_text, re.DOTALL)
                if json_match:
                    result = json.loads(json_match.group(0))
                else:
                    raise ValueError("未找到有效的 JSON 数据")

            # 确保 overall_score 是数值
            overall_score = float(result.get("overall_score", 0))

            # 返回结构（兼容 DELF/DALF）
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "vocabulary_score": result.get("vocabulary_score", {}),
                    "sentence_score": result.get("sentence_score", {}),
                    "structure_score": result.get("structure_score", {}),
                    "content_score": result.get("content_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": "标准模型"
            }

        except json.JSONDecodeError as e:
            print("【3.1.1标准模型评分】JSON 解析失败：", e)
            return {"score": 0, "message": "JSON 解析失败", "details": None}
        except KeyError as e:
            print("【3.1.1标准模型评分】缺少关键字段：", e)
            return {"score": 0, "message": f"缺少字段 {e}", "details": None}
        except Exception as e:
            print("【3.1.1标准模型评分】评分失败：", e)
            return {"score": 0, "message": "评分失败，发生错误", "details": None}


    except Exception as e:
        print("【GPT评分】作文评分失败：", e)
        return {"score": 0, "message": "评分失败，发生错误", "details": None}

#【3.1.1-1】英文评分模型
API_SECRET_KEY = "sk-zk225bfec571f860d1c68353ff237a6c63d6755d59ce560a"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)
def score_essay_chatgpt_EN(text,language,modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        # 设计提示词（Prompt）
        if modelName=="高考评分模型":
            prompt = f""" 请对以下{language}作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。
            【评分标准】
            词汇（0-25 分）
            词汇丰富度（0-6.25分）：使用的词汇是否多样，是否避免了重复使用简单词汇。
            词汇准确性（0-6.25分）：词汇使用是否准确，是否符合语境。
            恰当性（0-6.25分）
            语法规范性（0-6.25分）
            句子（0-25 分）
            句子结构（0-6.25分）：句子结构是否多样，是否使用了简单句、复合句和复杂句。
            句子流畅性（0-6.25分）：句子是否流畅，是否易于理解。
            句子长度（0-6.25分）：句子长度是否适中，是否避免了过长或过短的句子。
            语法正确性（0-6.25分）：句子是否符合语法规则，是否有语法错误。
            篇章结构（0-25 分）
            组织性（0-6.25分）：整体结构是否清晰。
            句间衔接（0-6.25分）：句子间连接是否自然。
            段间衔接（0-6.25分）：整篇文章的逻辑是否清晰，是否有明确的引言、主体和结论。
            连贯性（0-6.25分）：文章是否完整，是否有明确的开始、发展和结尾。
            内容相关（0-25分）
            内容完整性（0-6.25分）：内容是否涵盖所有必要信息。
            合理性（0-6.25分）：内容是否符合逻辑，是否提供了合理的论据。
            目的契合度（0-6.25分）：文章是否符合题目要求，是否围绕主题展开。
            内容逻辑性（0-6.25分）：内容是否有条理，是否具有清晰的推理过程。
            【输出要求】 请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如json）。包含以下字段：
                四项评分详情（含小项得分）
                三处优秀表达（需保留原文）
                每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
                三条具体修改建议（使用{language}）【JSON 模板】 
            {{ "vocabulary_score": 
            {{ "total": "词汇总得分", "richness": "词汇丰富度得分", "accuracy": "词汇准确性得分", "difficulty": "词汇难度得分", "collocation": "词汇搭配得分" }}, 
            "sentence_score":
             {{ "total": "句子总得分", "structure": "句子结构得分", "fluency": "句子流畅性得分", "length": "句子长度得分", "grammar": "语法正确性得分" }}, 
            "structure_score": 
            {{ "total": "篇章结构总得分", "organization": "组织性得分", "sentence_cohesion": "句间衔接得分", "paragraph_cohesion": "段间衔接得分", "coherence": "连贯性得分" }},
             "content_score":
              {{ "total": "内容总得分", "completeness": "内容完整性得分", "reasonableness": "合理性得分", "purpose_fit": "目的契合度得分", "logic": "内容逻辑性得分" }},
               "overall_score": "总评分", 
              "excellent_expressions": [ {{ "quote": "原文摘录1", "reason": "使用{language}说明优秀原因" }}, {{ "quote": "原文摘录2", "reason": "使用{language}说明优秀原因" }}, {{ "quote": "原文摘录3", "reason": "使用{language}说明优秀原因" }} ], 
              "suggestions": [ "具体修改建议1", "具体修改建议2", "具体修改建议3" ] }}
            
            【作文内容】 {text} """
        elif modelName=="考研评分模型":
            prompt = f""" 请对以下{language}作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。
            【评分标准】
            1. 内容得分（0-25分）
            题目契合度（0-6.25分）：是否完整覆盖题目要求
            细节丰富度（0-6.25分）：内容是否充实，支持充分
            逻辑合理性（0-6.25分）：内容组织是否符合逻辑
            目的契合度（0-6.25分）：是否符合写作目的与情境
            2. 篇章得分（0-25分）
            组织性（0-6.25分）：整体结构是否清晰
            句间衔接（0-6.25分）：句子间连接是否自然
            段间衔接（0-6.25分）：段落过渡是否流畅
            连贯性（0-6.25分）：全文是否意义连贯
            3. 句子得分（0-25分）
            句法多样性（0-6.25分）：句子结构是否多样
            语法准确性（0-6.25分）：是否有语法错误
            语法恰当性（0-6.25分）：是否符合语境
            复杂度（0-6.25分）：是否使用高级表达
            4. 词汇多样性（0-25分）
            词汇丰富度（0-6.25分）：词汇使用是否多样
            词汇准确性（0-6.25分）：词汇使用是否恰当
            词汇适切性（0-6.25分）：是否符合语境
            词汇高级性（0-6.25分）：是否使用高级词汇
            【输出要求】 请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如json）。包含以下字段：
            五项评分详情（含小项得分）
            三处优秀表达（需保留原文）
            每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            三条具体修改建议（使用{language}）
            【JSON模板】 {{ "content_score":
             {{ "total": "内容总得分", "topic_relevance": "题目契合度得分",
              "detail_richness": "细节丰富度得分", 
              "logical_reasoning": "逻辑合理性得分",
               "purpose_fit": "目的契合度得分" }},
                "structure_score": 
                {{ "total": "篇章总得分", "organization": "组织性得分",
                 "sentence_cohesion": "句间衔接得分",
                  "paragraph_cohesion": "段间衔接得分", "coherence": "连贯性得分" }},
                   "sentence_score":
                   {{ "total": "句子总得分",
                    "sentence_variety": "句法多样性得分",
                     "grammar_accuracy": "语法准确性得分",
                      "grammar_appropriateness": "语法恰当性得分", 
                      "complexity": "复杂度得分" }}, 
                      "vocabulary_score":
                       {{ "total": "词汇多样性总得分", 
                       "vocabulary_richness": "词汇丰富度得分",
                        "vocabulary_accuracy": "词汇准确性得分",
                         "vocabulary_appropriateness": "词汇适切性得分",
                          "advanced_vocabulary": "词汇高级性得分" }},
                               "overall_score": "总评分", "excellent_expressions": [ {{ "quote": "原文摘录1", "reason": "使用{language}说明优秀原因" }}, {{ "quote": "原文摘录2", "reason": "使用{language}说明优秀原因" }}, {{ "quote": "原文摘录3", "reason": "使用{language}说明优秀原因" }} ], "suggestions": [ "具体修改建议1", "具体修改建议2", "具体修改建议3" ] }}
            【作文内容】 {text} """
        elif modelName=="四六级评分模型":
            prompt = f"""
                请对以下{language}作文进行评分，并根据以下四个大项评分，总分为100分。请确保每个大项的评分由具体小项组成，并分别给出每个小项的得分。

                【评分标准】
                1. 内容（0-25分）
               - 主题明确（0-12.5分）：是否清楚表达文章中心思想
               - 逻辑清晰（0-12.5分）：内容是否有条理，表达是否清楚

                2. 句子（0-25分）
               - 句子流畅（0-12.5分）：句子结构是否自然，表达是否顺畅
               - 文章连贯（0-12.5分）：段落衔接是否合理，是否有良好的过渡

                3. 词汇（0-25分）
               - 语法错误（0-12.5分）：是否有语法错误，影响理解
               - 词汇使用（0-12.5分）：用词是否准确、恰当

                 4. 篇章（0-25分）
               - 段落逻辑性
            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如 ```json```）。包含以下字段：
            1. 三项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_score": {{
                    "total": "内容总得分",
                    "theme_clarity": "主题明确得分",
                    "logical_clarity": "逻辑清晰得分"
                }},
                "sentence_score": {{
                    "total": "句子总得分",
                    "sentence_fluidity": "句子流畅得分",
                    "text_coherence": "文章连贯得分"
                }},
                "vocabulary_score": {{
                    "total": "词汇总得分",
                    "grammar_errors": "语法错误得分",
                    "word_choice": "词汇使用得分"
                }},
                "structure_score": {{
                    "total": "篇章总得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        try:
            # 调用 GPT 模型
            response = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=[
                    {"role": "system", "content": "你是一个专业的法语作文评分助手。"},
                    {"role": "user", "content": prompt}
                ],
                max_tokens=700,
                temperature=0.7,
            )

            result_text = response.choices[0].message.content
            print("【GPT评分】模型返回内容：", result_text)  # 调试日志

            # 尝试直接解析 JSON
            try:
                result = json.loads(result_text)
            except json.JSONDecodeError:
                # 如果失败，尝试提取 {...} 部分
                json_match = re.search(r'\{.*\}', result_text, re.DOTALL)
                if json_match:
                    result = json.loads(json_match.group(0))
                else:
                    raise ValueError("未找到有效的 JSON 数据")

            # 确保 overall_score 是数值
            overall_score = float(result.get("overall_score", 0))

            # 返回结构（兼容 DELF/DALF）
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "vocabulary_score": result.get("vocabulary_score", {}),
                    "sentence_score": result.get("sentence_score", {}),
                    "structure_score": result.get("structure_score", {}),
                    "content_score": result.get("content_score", {}),
                   "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }

        except json.JSONDecodeError as e:
            print("【3.1.1-1英文模型评分】JSON 解析失败：", e)
            return {"score": 0, "message": "JSON 解析失败", "details": None}
        except KeyError as e:
            print("【3.1.1-1英文模型评分】缺少关键字段：", e)
            return {"score": 0, "message": f"缺少字段 {e}", "details": None}
    except Exception as e:
            print("【3.1.1-1英文模型评分】评分失败：", e)
            return {"score": 0, "message": "评分失败，发生错误", "details": None}


#【3.1.1-2】中文评分模型
API_SECRET_KEY = "sk-zk2fddcc2c2a27442fa13fe2bc82660ba0367e6ade4eea1f"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)

def score_essay_chatgpt_CHN(text,language,modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        if modelName == "高考评分模型":
                prompt = f"""
            请对以下作文进行评分，总分为100分。【评分标准】
            1.内容分 (0-25分)：是否符合题意、中心是否明确、内容是否丰富、感情是否真实材料丰富，论据充足，形象丰满，立意深远
            2.结构分 (0-25分)：重点考察作文的结构、语言、文体
            3.句子分（0-25分）：是否有文采、有创意性
            4.词汇分（0-25分）：使用词汇是否有误
            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如 json ）。包含以下字段： 
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}） 
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
            "content_score": {{
                "total": "内容总得分"
            }},
            "structure_score": {{
                "total": "结构总得分"
            }},
            "sentence_score": {{
                "total": "句子总得分"
            }},
            "vocabulary_score": {{
                "total": "词汇总得分"
            }},
            "overall_score": "总评分",
            "excellent_expressions": [
                {{
                    "quote": "原文提取1",
                     "reason": "使用说明优秀原因"
                }},
                {{
                    "quote": "原文提取2",
                    "reason": "使用说明优秀原因"
                }},
                {{
                    "quote": "原文提取3",
                    "reason": "使用说明优秀原因"
                }}
            ],
            "suggestions": [
                "具体修改建议1",
                "具体修改建议2",
                "具体修改建议3"
            ]
            }}

            【作文内容】
            {text}
            """


        try:
            # 调用 GPT 模型
            response = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=[
                    {"role": "system", "content": "你是一个专业的法语作文评分助手。"},
                    {"role": "user", "content": prompt}
                ],
                max_tokens=700,
                temperature=0.7,
            )

            result_text = response.choices[0].message.content
            print("【GPT评分】模型返回内容：", result_text)  # 调试日志

            # 尝试直接解析 JSON
            try:
                result = json.loads(result_text)
            except json.JSONDecodeError:
                # 如果失败，尝试提取 {...} 部分
                json_match = re.search(r'\{.*\}', result_text, re.DOTALL)
                if json_match:
                    result = json.loads(json_match.group(0))
                else:
                    raise ValueError("未找到有效的 JSON 数据")

            # 确保 overall_score 是数值
            overall_score = float(result.get("overall_score", 0))

            # 返回结构
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "vocabulary_score": result.get("vocabulary_score", {}),
                    "sentence_score": result.get("sentence_score", {}),
                    "structure_score": result.get("structure_score", {}),
                    "content_score": result.get("content_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }

        except json.JSONDecodeError as e:
            print("【3.1.1-2中文模型评分】JSON 解析失败：", e)
            return {"score": 0, "message": "JSON 解析失败", "details": None}
        except KeyError as e:
            print("【3.1.1-2中文模型评分】缺少关键字段：", e)
            return {"score": 0, "message": f"缺少字段 {e}", "details": None}
    except Exception as e:
            print("【3.1.1-2中文模型评分】评分失败：", e)
            return {"score": 0, "message": "评分失败，发生错误", "details": None}

#【3.1.1-3】法语评分模型
API_SECRET_KEY = "sk-zk2fddcc2c2a27442fa13fe2bc82660ba0367e6ade4eea1f"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)
def score_essay_chatgpt_FRANCE(text,language,modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        if modelName == "DALF评分模型":
            prompt = f"""
                请对以下法语作文进行评分，并根据以下四个大项评分，每个大项在评分标准中有标注，总分为100分。
                请确保大项评分由列出的小项评分组成，并给出小项得分。
                【评分标准】

                1. 内容得分（0-25分）
               - 是否完成作文主题任务（0-12.5分）：内容是否完整覆盖题目要求
               - 合理性（0-12.5分）：论证是否合理
               2.篇章得分（0-25分）
                表达是否清晰连贯，全文是否意义连贯
                3. 词汇得分（0-25分）
                - 拼写（0-10分）：单词拼写是否正确
               - 标点（0-10分）：标点使用是否规范
               - 格式（0-5分）：是否符合文体格式
                4.句子得分 （0-25分）
               - 句间衔接（0-10分）：句子间连接是否自然
               - 段间衔接（0-10分）：段落过渡是否流畅
               - 语法正确性（0-5分）

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如
            json
            ）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_score": {{
                    "total": "内容总得分",
                    "completion": "是否完成作文主题任务得分",
                    "reasonableness": "合理性得分"
                }},
                "structure_score": {{
                    "total": "篇章总得分"
                }},
                "vocabulary_score": {{
                    "total": "词汇总得分",
                    "spelling": "拼写得分",
                    "punctuation": "标点得分",
                    "formatting": "格式得分"
                }},
                  "sentence_score": {{
                    "total": "篇章总得分",
                     "sentence_cohesion": "句间衔接得分",
                    "paragraph_cohesion": "段间衔接得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """


        elif modelName=="DELF评分模型":
            prompt = f"""
                请对以下法语作文进行评分，并根据以下大项评分，总分为100分。请确保大项评分由列出的小项评分组成，并给出小项得分。

                【评分标准】

                1. 内容得分（0-25分）
               - 是否完成作文主题任务（0-12.5分）：内容是否完整覆盖题目要求
               - 合理性（0-12.5分）：论证是否合理
               2.篇章得分（0-25分）
                表达是否清晰连贯，全文是否意义连贯
                3. 词汇得分（0-25分）
                - 拼写（0-10分）：单词拼写是否正确
               - 标点（0-10分）：标点使用是否规范
               - 格式（0-5分）：是否符合文体格式
                4.句子得分 （0-25分）
               - 句间衔接（0-10分）：句子间连接是否自然
               - 段间衔接（0-10分）：段落过渡是否流畅
               - 语法正确性（0-5分）

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如
            json
            ）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_score": {{
                    "total": "内容总得分",
                    "completion": "是否完成作文主题任务得分",
                    "reasonableness": "合理性得分"
                }},
                "structure_score": {{
                    "total": "篇章总得分"
                }},
                "vocabulary_score": {{
                    "total": "词汇总得分",
                    "spelling": "拼写得分",
                    "punctuation": "标点得分",
                    "formatting": "格式得分"
                }},
                  "sentence_score": {{
                    "total": "篇章总得分",
                     "sentence_cohesion": "句间衔接得分",
                    "paragraph_cohesion": "段间衔接得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        try:
            # 调用 GPT 模型
            response = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=[
                    {"role": "system", "content": "你是一个专业的法语作文评分助手。"},
                    {"role": "user", "content": prompt}
                ],
                max_tokens=700,
                temperature=0.7,
            )

            result_text = response.choices[0].message.content
            print("【GPT评分】模型返回内容：", result_text)  # 调试日志

            # 尝试直接解析 JSON
            try:
                result = json.loads(result_text)
            except json.JSONDecodeError:
                # 如果失败，尝试提取 {...} 部分
                json_match = re.search(r'\{.*\}', result_text, re.DOTALL)
                if json_match:
                    result = json.loads(json_match.group(0))
                else:
                    raise ValueError("未找到有效的 JSON 数据")

            # 确保 overall_score 是数值
            overall_score = float(result.get("overall_score", 0))

            # 返回结构（兼容 DELF/DALF）
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "vocabulary_score": result.get("vocabulary_score", {}),
                    "sentence_score": result.get("sentence_score", {}),
                    "structure_score": result.get("structure_score", {}),
                    "content_score": result.get("content_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }

        except json.JSONDecodeError as e:
            print("【3.1.1-3法语模型评分】JSON 解析失败：", e)
            return {"score": 0, "message": "JSON 解析失败", "details": None}
    except KeyError as e:
            print("【3.1.1-3法语模型评分】缺少关键字段：", e)
            return {"score": 0, "message": f"缺少字段 {e}", "details": None}
    except Exception as e:
            print("【3.1.1-3法语模型评分】评分失败：", e)
            return {"score": 0, "message": "评分失败，发生错误", "details": None}

#【3.1.1-4】俄语评分模型
API_SECRET_KEY = "sk-zk2fddcc2c2a27442fa13fe2bc82660ba0367e6ade4eea1f"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)
def score_essay_chatgpt_RUSSIA(text,language,modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        if modelName == "CRT-4（ТРКИ-1 / B1级）评分模型":
            prompt = f"""
                请对以下俄语作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 内容得分（0-25分）
               - 任务完成度（0-12.5分）：内容是否完整覆盖题目要求
               - 主题（0-12.5分）：主题表达清晰，信息完整（如时间、地点、人物等）

                2. 词汇得分（0-25分）
                - 词汇是否正确（0-12.5分）：语法正确（动词变位、名词格、时态等）
                - 词汇使用是否恰当（0-12.5分）：避免重复或中式表达

                3. 篇章得分（0-25分）
                - 逻辑性（0-12.5分）：分段合理，句子间有连接词（如 «потому что», «поэтому»）
                - 内容连贯性（0-12.5分）：条理清晰，无明显逻辑跳跃

                4.句子得分（0-25分）
                句子是否流畅，结构是否完整


            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如 `json`）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_score": {{
                    "total": "内容总得分",
                    "task_completion": "任务完成度得分",
                    "theme": "主题表达得分"
                }},
                "vocabulary_score": {{
                    "total": "词汇总得分",
                    "vocabulary_correctness": "词汇正确性得分",
                    "vocabulary_appropriateness": "词汇使用恰当性得分"
                }},
                "structure_score": {{
                    "total": "篇章总得分",
                    "logical_structure": "逻辑性得分",
                    "content_coherence": "内容连贯性得分"
                }},
                "sentence_score": {{
                    "total": "句子总得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """


        elif modelName=="CRT-6（ТРКИ-2 / B2级）评分模型":
            prompt = f"""
                请对以下{language}作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 内容得分（0-25分）
                  - 能表达出抽象观点（0-12.5分）
                  - 使用一定例证或数据支持观点（0-12.5分）

                2. 词汇得分（0-25分）
                  -词汇使用是否准确（0-12.5分）
                  - 是否使用高级词汇（0-12.5分）

                3. 篇章得分（0-25分）
                  - 文章结构是否严谨（0-12.5分）：引言、主体、结论完整
                  - 段落间过渡是否自然（0-12.5分）

                4. 句子得分（0-25分）
                 - 句式多样（0-10分）：采用复合句、分词短语等
                  - 语法（0-10分）：是否有语法错误
                  - 规范性（0-5分）：书面语是否规范、是否符合学术或正文体要求

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如 `json`）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_score": {{
                    "total": "内容总得分",
                    "abstract_ideas": "能表达出抽象观点得分",
                    "evidence_support": "使用例证或数据支持观点得分"
                }},
                "vocabulary_score": {{
                    "total": "词汇总得分",
                    "sentence_accurancy": "准确性得分",
                    "advanced_vocabulary": "高级词汇使用得分"
                }},
                "structure_score": {{
                    "total": "逻辑结构总得分",
                    "structural_coherence": "文章结构严谨性得分",
                    "paragraph_transition": "段落间过渡自然性得分"
                }},
                "sentence_score": {{
                    "total": 句子总得分",
                    "diversity": "多样性得分",
                    "grammar_accuracy": "语法正确性得分",
                    "formal_writing": "书面语规范性得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        try:
            # 调用 GPT 模型
            response = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=[
                    {"role": "system", "content": "你是一个专业的俄语作文评分助手。"},
                    {"role": "user", "content": prompt}
                ],
                max_tokens=700,
                temperature=0.7,
            )

            result_text = response.choices[0].message.content
            print("【GPT评分】模型返回内容：", result_text)  # 调试日志

            # 尝试直接解析 JSON
            try:
                result = json.loads(result_text)
            except json.JSONDecodeError:
                # 如果失败，尝试提取 {...} 部分
                json_match = re.search(r'\{.*\}', result_text, re.DOTALL)
                if json_match:
                    result = json.loads(json_match.group(0))
                else:
                    raise ValueError("未找到有效的 JSON 数据")

            # 确保 overall_score 是数值
            overall_score = float(result.get("overall_score", 0))

            # 返回结构
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "vocabulary_score": result.get("vocabulary_score", {}),
                    "sentence_score": result.get("sentence_score", {}),
                    "structure_score": result.get("structure_score", {}),
                    "content_score": result.get("content_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }

        except json.JSONDecodeError as e:
            print("【3.1.1-4俄语模型评分】JSON 解析失败：", e)
            return {"score": 0, "message": "JSON 解析失败", "details": None}
        except KeyError as e:
            print("【3.1.1-4俄语模型评分】缺少关键字段：", e)
            return {"score": 0, "message": f"缺少字段 {e}", "details": None}
    except Exception as e:
            print("【3.1.1-4俄语模型评分】评分失败：", e)
            return {"score": 0, "message": "评分失败，发生错误", "details": None}

#【3.1.1-5】西班牙语评分模型
API_SECRET_KEY = "sk-zk2fddcc2c2a27442fa13fe2bc82660ba0367e6ade4eea1f"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)
def score_essay_chatgpt_SPAIN(text,language,modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        if modelName == "DELE评分模型":
            prompt = f"""
                请对以下西班牙语作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 内容得分（0-25分）
                  - 是否论证合理，条理清晰，论点突出（0-12.5分）
                  - 是否考虑了收信人的情况，符合体裁的风格和惯例（0-12.5分）

                2. 结构得分（0-25分）
                  - 文章是否清晰、连贯（0-12.5分）
                  - 结构是否合理（0-12.5分）

                3. 句子得分（0-25分）
                  - 语法、拼写、词汇使用是否正确（0-12.5分）

                4. 词汇得分（0-25分）
                  - 语汇量是否丰富（0-12.5分）
                  - 是否熟练掌握惯用语与口语表达方式（0-12.5分）

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，返回结果必须以花括号作为开头，不允许包含任何额外的解释、说明或标记（如 `json`）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}！！一定要使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_score": {{
                    "total": "内容总得分",
                    "argument_clarity": "论证合理性与条理清晰度得分",
                    "genre_appropriateness": "体裁风格与惯例符合度得分"
                }},
                "structure_score": {{
                    "total": "篇章结构总得分",
                    "text_clarity": "文章清晰度得分",
                    "structural_reasonability": "结构合理性得分"
                }},
                "sentence_score": {{
                    "total": "句子总得分",
                    "grammar_spelling_vocabulary": "语法、拼写、词汇正确性得分"
                }},
                "vocabulary_score": {{
                    "total": "词汇总得分",
                    "vocabulary_richness": "语汇量丰富度得分",
                    "idiomatic_usage": "惯用语与口语表达熟练度得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        try:
            # 调用 GPT 模型
            response = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=[
                    {"role": "system", "content": "你是一个专业的西班牙语作文评分助手。"},
                    {"role": "user", "content": prompt}
                ],
                max_tokens=700,
                temperature=0.7,
            )

            result_text = response.choices[0].message.content
            print("【GPT评分】模型返回内容：", result_text)  # 调试日志

            # 尝试直接解析 JSON
            try:
                result = json.loads(result_text)
            except json.JSONDecodeError:
                # 如果失败，尝试提取 {...} 部分
                json_match = re.search(r'\{.*\}', result_text, re.DOTALL)
                if json_match:
                    result = json.loads(json_match.group(0))
                else:
                    raise ValueError("未找到有效的 JSON 数据")

            # 确保 overall_score 是数值
            overall_score = float(result.get("overall_score", 0))

            # 返回结构
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "vocabulary_score": result.get("vocabulary_score", {}),
                    "sentence_score": result.get("sentence_score", {}),
                    "structure_score": result.get("structure_score", {}),
                    "content_score": result.get("content_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }

        except json.JSONDecodeError as e:
            print("【3.1.1-5西班牙语模型评分】JSON 解析失败：", e)
            return {"score": 0, "message": "JSON 解析失败", "details": None}
        except KeyError as e:
            print("【3.1.1-5西班牙模型评分】缺少关键字段：", e)
            return {"score": 0, "message": f"缺少字段 {e}", "details": None}
    except Exception as e:
            print("【3.1.1-5西班牙模型评分】评分失败：", e)
            return {"score": 0, "message": "评分失败，发生错误", "details": None}

#【3.1.1-6】日语评分模型
API_SECRET_KEY = "sk-zk2fddcc2c2a27442fa13fe2bc82660ba0367e6ade4eea1f"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)
def score_essay_chatgpt_JAPAN(text,language,modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        if modelName == "CJT-4评分模型":
            prompt = f"""
                请对以下{language}作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 内容得分（0-30分）
                  - 内容切题度（0-20分）
                  - 内容完整性（0-20分）

                2. 句子得分（0-30分）
                  句子使用是否丰富，采用复合句、分词短语等

                3. 篇章结构得分（0-20分）
                  - 文章结构是否严谨（0-15分）：引言、主体、结论完整
                  - 段落间过渡是否自然（0-15分）

                4. 词汇得分（0-20分）
                  - 语法使用是否正确（0-20分）
            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如 `json`）。包含以下字段：
            1. 三项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_score": {{
                    "total": "内容总得分",
                    "relevance": "内容切题度得分",
                    "completeness": "内容完整性得分"
                }},
                "sentence_score": {{
                    "total": "语言表达总得分"
                }},
                "structure_score": {{
                    "total": "篇章结构总得分",
                    "structural_integrity": "文章结构严谨性得分",
                    "paragraph_transition": "段落间过渡自然性得分"
                }},
                 "vocabulary_score": {{
                    "total": "词汇总得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        elif modelName =="CJT-6评分模型":
            prompt = f"""
                请对以下{language}作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 内容得分（0-30分）
                   - 内容是否完整（0-15分）
                   - 是否清晰表达文章中心主旨（0-15分）

                2. 词汇得分（0-30分）
                   - 语法是否正确（0-15分）
                   - 拼写与词汇使用是否准确（0-15分）

                3. 篇章得分（0-20分）
                   - 段落结构是否清晰（0-10分）
                   - 是否使用连接词使行文流畅（0-10分）

                4. 句子得分（0-20分）
                   - 句式是否多样（0-10分）（如复合句、被动形、使役形）
                   - 是否使用高级词汇（0-10分）

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，返回结果必须以花括号作为开头，不允许包含任何额外的解释、说明或标记（如 `json`）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_score": {{
                    "total": "内容总得分",
                    "completeness": "内容完整性得分",
                    "main_idea_clarity": "中心主旨清晰度得分"
                }},
                "vocabulary_score": {{
                    "total": "词汇总得分",
                    "grammar_correctness": "语法正确性得分",
                    "spelling_vocabulary": "拼写与词汇使用正确性得分"
                }},
                "structure_score": {{
                    "total": "篇章结构总得分",
                    "paragraph_clarity": "段落结构清晰度得分",
                    "cohesion": "连接词使用流畅度得分"
                }},
                "sentence_score": {{
                    "total": "句子总得分",
                    "sentence_variety": "句式多样性得分",
                    "advanced_vocabulary": "高级词汇使用得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        try:
            # 调用 GPT 模型
            response = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=[
                    {"role": "system", "content": "你是一个专业的西班牙语作文评分助手。"},
                    {"role": "user", "content": prompt}
                ],
                max_tokens=700,
                temperature=0.7,
            )

            result_text = response.choices[0].message.content
            print("【GPT评分】模型返回内容：", result_text)  # 调试日志

            # 尝试直接解析 JSON
            try:
                result = json.loads(result_text)
            except json.JSONDecodeError:
                # 如果失败，尝试提取 {...} 部分
                json_match = re.search(r'\{.*\}', result_text, re.DOTALL)
                if json_match:
                    result = json.loads(json_match.group(0))
                else:
                    raise ValueError("未找到有效的 JSON 数据")

            # 确保 overall_score 是数值
            overall_score = float(result.get("overall_score", 0))

            # 返回结构
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "vocabulary_score": result.get("vocabulary_score", {}),
                    "sentence_score": result.get("sentence_score", {}),
                    "structure_score": result.get("structure_score", {}),
                    "content_score": result.get("content_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }

        except json.JSONDecodeError as e:
            print("【3.1.1-6日语模型评分】JSON 解析失败：", e)
            return {"score": 0, "message": "JSON 解析失败", "details": None}
        except KeyError as e:
            print("【3.1.1-6日语模型评分】缺少关键字段：", e)
            return {"score": 0, "message": f"缺少字段 {e}", "details": None}
    except Exception as e:
            print("【3.1.1-6日语模型评分】评分失败：", e)
            return {"score": 0, "message": "评分失败，发生错误", "details": None}


# 【3.1.1-1】英文评分模型 （不同维度）
API_SECRET_KEY = "sk-zk225bfec571f860d1c68353ff237a6c63d6755d59ce560a"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)


def score_essay_chatgpt_EN2(text, language, modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        # 设计提示词（Prompt）
        if modelName == "英文高考评分模型":
            prompt = f""" 
            请对以下{language}作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。
            【评分标准】
            1. 内容（0-25分）
            完整性（0-6.25分）：内容是否完整并且清楚
            合理性（0-6.25分）：内容是否合理，逻辑性强
            目的契合度（0-6.25分）：是否符合写作目的与情境
            逻辑性（0-6.25分）：内容组织是否符合逻辑
            2. 词汇语法（0-25分）
            多样性（0-6.25分）：词汇和语法结构是否多样
            准确性（0-6.25分）：使用是否准确
            恰当性（0-6.25分）：是否符合语境
            语法规范性（0-6.25分）：语法是否符合标准
            3. 篇章结构（0-25分）
            组织性（0-6.25分）：整体结构是否清晰
            句间衔接（0-6.25分）：句子间连接是否自然
            段间衔接（0-6.25分）：段落过渡是否流畅
            连贯性（0-6.25分）：全文是否意义连贯
            4. 写作规范（0-25分）
            拼写（0-6.25分）：单词拼写是否正确
            标点（0-6.25分）：标点使用是否规范
            大小写（0-6.25分）：大小写是否正确
            格式（0-6.25分）：是否符合文体格式
            【输出要求】 请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如json）。包含以下字段：
            四项评分详情（含小项得分）
            三处优秀表达（需保留原文）
            每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            三条具体修改建议（使用{language}）
            【JSON模板】 
            {{ "content_score":
             {{ "total": "内容总得分",
              "completeness": "完整性得分",
               "reasonableness": "合理性得分",
                "purpose_fit": "目的契合度得分",
                 "logic": "逻辑性得分" }}, 
                 "vocabulary_grammar_score": 
                 {{ "total": "词汇语法总得分",
                  "diversity": "多样性得分",
                   "accuracy": "准确性得分", 
                   "appropriateness": "恰当性得分",
                    "grammar_norms": "语法规范性得分" }},
                     "structure_score":
                    {{ "total": "篇章结构总得分",
                     "organization": "组织性得分",
                      "sentence_cohesion": "句间衔接得分",
                       "paragraph_cohesion": "段间衔接得分",
                        "coherence": "连贯性得分" }},
                         "convention_score":
                        {{ "total": "写作规范总得分",
                         "spelling": "拼写得分",
                          "punctuation": "标点得分",
                          "capitalization": "大小写得分",
                           "formatting": "格式得分" }},
                            "overall_score": "总评分",
                             "excellent_expressions": 
                             [ {{ "quote": "原文摘录1", "reason": "使用{language}说明优秀原因" }}, {{ "quote": "原文摘录2", "reason": "使用{language}说明优秀原因" }}, {{ "quote": "原文摘录3", "reason": "使用{language}说明优秀原因" }} ],
                              "suggestions": [ "具体修改建议1", "具体修改建议2", "具体修改建议3" ] }}

            【作文内容】

             {text} """
        elif modelName == "考研评分模型":
            prompt = f"""
    请对以下{language}作文进行评分，并根据以下五个大项评分，每个大项满分20分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

    【评分标准】
    1. 内容完整性（0-20分）
   - 题目契合度（0-5分）：是否完整覆盖题目要求
   - 细节丰富度（0-5分）：内容是否充实，支持充分
   - 逻辑合理性（0-5分）：内容组织是否符合逻辑
   - 目的契合度（0-5分）：是否符合写作目的与情境

    2. 文章组织连贯性（0-20分）
   - 组织性（0-5分）：整体结构是否清晰
   - 句间衔接（0-5分）：句子间连接是否自然
   - 段间衔接（0-5分）：段落过渡是否流畅
   - 连贯性（0-5分）：全文是否意义连贯

    3. 语法结构（0-20分）
   - 句法多样性（0-5分）：句子结构是否多样
   - 语法准确性（0-5分）：是否有语法错误
   - 语法恰当性（0-5分）：是否符合语境
   - 复杂度（0-5分）：是否使用高级表达

    4. 词汇多样性（0-20分）
   - 词汇丰富度（0-5分）：词汇使用是否多样
   - 词汇准确性（0-5分）：词汇使用是否恰当
   - 词汇适切性（0-5分）：是否符合语境
   - 词汇高级性（0-5分）：是否使用高级词汇

    5. 语言准确性（0-20分）
   - 拼写（0-5分）：单词拼写是否正确
   - 标点（0-5分）：标点使用是否规范
   - 大小写（0-5分）：大小写是否正确
   - 语法规范性（0-5分）：是否符合语言规范

【输出要求】
请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如json）。包含以下字段：
1. 五项评分详情（含小项得分）
2. 三处优秀表达（需保留原文）
3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
4. 三条具体修改建议（使用{language}）

【JSON模板】
{{
    "content_score": {{
        "total": "内容完整性总得分",
        "topic_relevance": "题目契合度得分",
        "detail_richness": "细节丰富度得分",
        "logical_reasoning": "逻辑合理性得分",
        "purpose_fit": "目的契合度得分"
    }},
    "organization_coherence_score": {{
        "total": "文章组织连贯性总得分",
        "organization": "组织性得分",
        "sentence_cohesion": "句间衔接得分",
        "paragraph_cohesion": "段间衔接得分",
        "coherence": "连贯性得分"
    }},
    "grammar_structure_score": {{
        "total": "语法结构总得分",
        "sentence_variety": "句法多样性得分",
        "grammar_accuracy": "语法准确性得分",
        "grammar_appropriateness": "语法恰当性得分",
        "complexity": "复杂度得分"
    }},
    "vocabulary_diversity_score": {{
        "total": "词汇多样性总得分",
        "vocabulary_richness": "词汇丰富度得分",
        "vocabulary_accuracy": "词汇准确性得分",
        "vocabulary_appropriateness": "词汇适切性得分",
        "advanced_vocabulary": "词汇高级性得分"
    }},
    "language_accuracy_score": {{
        "total": "语言准确性总得分",
        "spelling": "拼写得分",
        "punctuation": "标点得分",
        "capitalization": "大小写得分",
        "grammar_norms": "语法规范性得分"
    }},
    "overall_score": "总评分",
    "excellent_expressions": [
        {{
            "quote": "原文摘录1",
            "reason": "使用{language}说明优秀原因"
        }},
        {{
            "quote": "原文摘录2",
            "reason": "使用{language}说明优秀原因"
        }},
        {{
            "quote": "原文摘录3",
            "reason": "使用{language}说明优秀原因"
        }}
    ],
    "suggestions": [
        "具体修改建议1",
        "具体修改建议2",
        "具体修改建议3"
    ]
}}

【作文内容】
{text}
"""
        elif modelName == "四六级评分模型":
            prompt = f"""
                请对以下{language}作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 语用能力（0-40分）
               - 是否完成作文主题任务（0-20分）：内容是否完整覆盖题目要求
               - 连贯性（0-10分）：表达是否清晰连贯，全文是否意义连贯
               - 合理性（0-10分）：论证是否合理

                2. 社会语言能力（0-30分）
               是否符合法国语言使用规范，口语使用情况

                3. 语言能力（0-30分）
               - 句间衔接（0-5分）：句子间连接是否自然
               - 段间衔接（0-5分）：段落过渡是否流畅
                - 拼写（0-5分）：单词拼写是否正确
               - 标点（0-5分）：标点使用是否规范
               - 大小写（0-5分）：大小写是否正确
               - 格式（0-5分）：是否符合文体格式


            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如
            json
            ）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "pragmatic_ability_score": {{
                    "total": "语用能力总得分",
                    "completion": "是否完成作文主题任务得分",
                    "coherence": "连贯性得分",
                    "reasonableness": "合理性得分"
                }},
                "social_language_ability_score": {{
                    "total": "社会语言能力总得分",
                    "social_appropriateness": "社会语言适应性得分"
                }},
                "language_ability_score": {{
                    "total": "语言能力总得分",
                    "sentence_cohesion": "句间衔接得分",
                    "paragraph_cohesion": "段间衔接得分",
                    "spelling": "拼写得分",
                    "punctuation": "标点得分",
                    "capitalization": "大小写得分",
                    "formatting": "格式得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        # 调用 GPT 模型
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "你是一个专业的英文作文评分助手。"},
                {"role": "user", "content": prompt}
            ],
            max_tokens=700,
            temperature=0.7,
        )

        # 解析返回的 JSON 结果
        result_text = response.choices[0].message.content

        # 提取 JSON 部分（找到第一个 "{" 和 最后一个 "}"）
        json_match = re.search(r'\{.*\}', result_text, re.DOTALL)

        if json_match:
            json_text = json_match.group(0)  # 提取 JSON 内容
            print("【GPT评分】模型返回 JSON 内容：", json_text)

            # 解析 JSON
            try:
                result = json.loads(json_text)
                print("【GPT评分】解析后的 JSON：", result)
            except json.JSONDecodeError as e:
                print("【GPT评分】JSON 解析失败：", e)
        else:
            print("【GPT评分】未找到 JSON 格式数据")

        # 组织返回数据
        if modelName == "英文高考评分模型":
            return {
                "score": round(result.get("overall_score", 0), 2),
                "message": "评分成功",
                "details": {
                    "content_score": result.get("content_score", {}),
                    "vocabulary_grammar_score": result.get("vocabulary_grammar_score", {}),
                    "structure_score": result.get("structure_score", {}),
                    "convention_score": result.get("convention_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }
        elif modelName == "考研评分模型":
            return {
                "score": round(result.get("overall_score", 0), 2),
                "message": "评分成功",
                "details": {
                    "content_score": result.get("content_score", {}),
                    "organization_coherence_score": result.get("organization_coherence_score", {}),
                    "grammar_structure_score": result.get("grammar_structure_score", {}),
                    "vocabulary_diversity_score": result.get("vocabulary_diversity_score", {}),
                    "language_accuracy_score": result.get("language_accuracy_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }
        elif modelName == "四六级评分模型":
            return {
                "score": round(result.get("overall_score", 0), 2),
                "message": "评分成功",
                "details": {
                    "pragmatic_ability_score": result.get("pragmatic_ability_score", {}),
                    "social_language_ability_score": result.get("social_language_ability_score", {}),
                    "language_ability_score": result.get("language_ability_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }


    except Exception as e:
        print("【GPT评分--英文模型】作文评分失败：", e)
        return {"score": 0, "message": "评分失败，发生错误", "details": None}


# 【3.1.1-2】中文评分模型（不同维度）
API_SECRET_KEY = "sk-zk225bfec571f860d1c68353ff237a6c63d6755d59ce560a"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)


def score_essay_chatgpt_CHN2(text, language, modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        if modelName == "中文高考评分模型":
            prompt = f"""
        请对以下作文进行评分，并根据以下两大项进行评分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。：【评分标准】
        1. 基础分 (0-60分)
        内容分 (0-30分)：是否符合题意、中心是否明确、内容是否丰富、感情是否真实
        表达分 (0-30分)：重点考察作文的结构、语言、文体
        2. 发展分 (0-40分)
        深刻性 (0-10分)：透过现象看本质，揭示事物内在的因果关系，观点具有启发作用
        丰富性 (0-10分)：材料丰富，论据充足，形象丰满，立意深远
        有文采 (0-10分)：用词贴切，句式灵活，善于运用修辞手段，文句有表现力
        创意性 (0-10分)：观点新颖，材料新鲜，构思精巧，推理想象有独到之处，有个性特征
        【输出要求】
        请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如 json ）。包含以下字段： 
        1. 四项评分详情（含小项得分）
        2. 三处优秀表达（需保留原文）
        3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}） 
        4. 三条具体修改建议（使用{language}）

        【JSON模板】
        {{
        "basic_score": {{
            "total": "基础总得分",
            "content": "内容得分",
            "expression": "表达得分"
        }},
        "development_score": {{
            "total": "发展总得分",
            "depth": "深刻性得分",
            "richness": "丰富性得分",
            "literary": "文采得分",
            "creativity": "创意性得分"
        }},
        "overall_score": "总评分",
        "excellent_expressions": [
            {{
                "quote": "原文提取1",
                 "reason": "使用说明优秀原因"
            }},
            {{
                "quote": "原文提取2",
                "reason": "使用说明优秀原因"
            }},
            {{
                "quote": "原文提取3",
                "reason": "使用说明优秀原因"
            }}
        ],
        "suggestions": [
            "具体修改建议1",
            "具体修改建议2",
            "具体修改建议3"
        ]
        }}

        【作文内容】
        {text}
        """



        # 调用 GPT 模型
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "你是一个专业的中文作文评分助手。"},
                {"role": "user", "content": prompt}
            ],
            max_tokens=700,
            temperature=0.7,
        )

        # 解析返回的 JSON 结果
        result_text = response.choices[0].message.content

        # 提取 JSON 部分（找到第一个 "{" 和 最后一个 "}"）
        json_match = re.search(r'\{.*\}', result_text, re.DOTALL)

        if json_match:
            json_text = json_match.group(0)  # 提取 JSON 内容
            print("【GPT评分】模型返回 JSON 内容：", json_text)

            # 解析 JSON
            try:
                result = json.loads(json_text)
                print("【GPT评分】解析后的 JSON：", result)
            except json.JSONDecodeError as e:
                print("【GPT评分】JSON 解析失败：", e)
        else:
            print("【GPT评分】未找到 JSON 格式数据")
        overall_score = float(result.get("overall_score", 0))

        # 组织返回数据
        if modelName == "中文高考评分模型":
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "basic_score": result.get("basic_score", {}),
                    "development_score": result.get("development_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }


    except Exception as e:
        print("【GPT评分--中文模型】作文评分失败：", e)
        return {"score": 0, "message": "评分失败，发生错误", "details": None}


# 【3.1.1-3】法语评分模型（不同维度）
API_SECRET_KEY = "sk-zk225bfec571f860d1c68353ff237a6c63d6755d59ce560a"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)


def score_essay_chatgpt_FRANCE2(text, language, modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        if modelName == "DALF评分模型":
            prompt = f"""
                请对以下法语作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 语用能力（0-40分）
               - 是否完成作文主题任务（0-20分）：内容是否完整覆盖题目要求
               - 连贯性（0-10分）：表达是否清晰连贯，全文是否意义连贯
               - 合理性（0-10分）：论证是否合理

                2. 社会语言能力（0-30分）
               是否符合法国语言使用规范，口语使用情况

                3. 语言能力（0-30分）
               - 句间衔接（0-5分）：句子间连接是否自然
               - 段间衔接（0-5分）：段落过渡是否流畅
                - 拼写（0-5分）：单词拼写是否正确
               - 标点（0-5分）：标点使用是否规范
               - 大小写（0-5分）：大小写是否正确
               - 格式（0-5分）：是否符合文体格式


            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如```json```）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "pragmatic_ability_score": {{
                    "total": "语用能力总得分",
                    "completion": "是否完成作文主题任务得分",
                    "coherence": "连贯性得分",
                    "reasonableness": "合理性得分"
                }},
                "social_language_ability_score": {{
                    "total": "社会语言能力总得分",
                    "social_appropriateness": "社会语言适应性得分"
                }},
                "language_ability_score": {{
                    "total": "语言能力总得分",
                    "sentence_cohesion": "句间衔接得分",
                    "paragraph_cohesion": "段间衔接得分",
                    "spelling": "拼写得分",
                    "punctuation": "标点得分",
                    "capitalization": "大小写得分",
                    "formatting": "格式得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        elif modelName == "DELF评分模型":
            prompt = f"""
                请对以下法语作文进行评分，并根据以下三个大项评分，总分为100分。请确保每个大项的评分由具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 实践运用能力（0-40分）
               - 任务完成度（0-20分）：内容是否完整覆盖题目要求
               - 结构（0-20分）：结构是否严密协调

                2. 社会语言习得能力（0-30分）
                 是否与社会语言习惯相符

                3. 语言能力（0-30分）
                - 语法形态（0-15分）：单词拼写、语法使用是否正确
                - 句间衔接（0-5分）：句子间连接是否自然
                - 段间衔接（0-5分）：段落过渡是否流畅
                - 标点（0-5分）：标点使用是否规范

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如```json```）。包含以下字段：
            1. 三项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "practical_application_score": {{
                    "total": "实践运用能力总得分",
                    "task_completion": "任务完成度得分",
                    "structure": "结构得分"
                }},
                "social_language_acquisition_score": {{
                    "total": "社会语言习得能力总得分",
                    "appropriateness": "社会语言适应性得分"
                }},
                "language_ability_score": {{
                    "total": "语言能力总得分",
                    "morphology_syntax": "语法形态得分",
                    "sentence_cohesion": "句间衔接得分",
                    "paragraph_cohesion": "段间衔接得分",
                    "punctuation": "标点得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        # 调用 GPT 模型
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "你是一个专业的法语作文评分助手。"},
                {"role": "user", "content": prompt}
            ],
            max_tokens=700,
            temperature=0.7,
        )

        # 解析返回的 JSON 结果
        result_text = response.choices[0].message.content

        # 提取 JSON 部分（找到第一个 "{" 和 最后一个 "}"）
        json_match = re.search(r'\{.*\}', result_text, re.DOTALL)

        if json_match:
            json_text = json_match.group(0)  # 提取 JSON 内容
            print("【GPT评分】模型返回 JSON 内容：", json_text)

            # 解析 JSON
            try:
                result = json.loads(json_text)
                print("【GPT评分】解析后的 JSON：", result)
            except json.JSONDecodeError as e:
                print("【GPT评分】JSON 解析失败：", e)
        else:
            print("【GPT评分】未找到 JSON 格式数据")

        overall_score = float(result.get("overall_score", 0))

        # 组织返回数据
        if modelName == "DALF评分模型":
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "pragmatic_ability_score": result.get("pragmatic_ability_score", {}),
                    "social_language_ability_score": result.get("social_language_ability_score", {}),
                    "language_ability_score": result.get("language_ability_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }
        elif modelName == "DELF评分模型":
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "practical_application_score": result.get("practical_application_score", {}),
                    "social_language_acquisition_score": result.get("social_language_acquisition_score", {}),
                    "language_ability_score": result.get("language_ability_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }


    except Exception as e:
        print("【GPT评分--法语模型】作文评分失败：", e)
        return {"score": 0, "message": "评分失败，发生错误", "details": None}


# 【3.1.1-4】俄语评分模型 （不同维度）
API_SECRET_KEY = "sk-zk225bfec571f860d1c68353ff237a6c63d6755d59ce560a"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)


def score_essay_chatgpt_RUSSIA2(text, language, modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        if modelName == "CRT-4（ТРКИ-1 / B1级）评分模型":
            prompt = f"""
                请对以下{language}作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 内容完整性（0-30分）
               - 任务完成度（0-15分）：内容是否完整覆盖题目要求
               - 主题（0-15分）：主题表达清晰，信息完整（如时间、地点、人物等）

                2. 语言准确性（0-30分）
                - 词汇是否正确（0-15分）：语法正确（动词变位、名词格、时态等）
                - 词汇使用是否恰当（0-15分）：避免重复或中式表达

                3. 逻辑与连贯性（0-20分）
                - 逻辑性（0-10分）：分段合理，句子间有连接词（如 «потому что», «поэтому»）
                - 内容连贯性（0-10分）：条理清晰，无明显逻辑跳跃

                4. 格式与规范（0-20分）
                - 文体格式（0-10分）：是否符合文体格式（如书信开头/结尾）
                - 书写（0-10分）：标点符号是否是否正确

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如 `json`）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_integrity_score": {{
                    "total": "内容完整性总得分",
                    "task_completion": "任务完成度得分",
                    "theme": "主题表达得分"
                }},
                "language_accuracy_score": {{
                    "total": "语言准确性总得分",
                    "vocabulary_correctness": "词汇正确性得分",
                    "vocabulary_appropriateness": "词汇使用恰当性得分"
                }},
                "logic_coherence_score": {{
                    "total": "逻辑与连贯性总得分",
                    "logical_structure": "逻辑性得分",
                    "content_coherence": "内容连贯性得分"
                }},
                "format_norms_score": {{
                    "total": "格式与规范总得分",
                    "text_format": "文体格式得分",
                    "punctuation": "标点符号得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """


        elif modelName == "CRT-6（ТРКИ-2 / B2级）评分模型":
            prompt = f"""
                请对以下俄语作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 内容深度与复杂性（0-30分）
                  - 能表达出抽象观点（0-15分）
                  - 使用一定例证或数据支持观点（0-15分）

                2. 语言丰富性（0-30分）
                  - 句式多样（0-15分）：采用复合句、分词短语等
                  - 是否使用高级词汇（0-15分）

                3. 逻辑结构（0-20分）
                  - 文章结构是否严谨（0-10分）：引言、主体、结论完整
                  - 段落间过渡是否自然（0-10分）

                4. 语法格式（0-20分）
                  - 语法（0-10分）：是否有语法错误
                  - 规范性（0-10分）：书面语是否规范、是否符合学术或正文体要求

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如 ```json```）返回结果必须以花括号作为开头。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_depth_complexity_score": {{
                    "total": "内容深度与复杂性总得分",
                    "abstract_ideas": "能表达出抽象观点得分",
                    "evidence_support": "使用例证或数据支持观点得分"
                }},
                "language_richness_score": {{
                    "total": "语言丰富性总得分",
                    "sentence_variety": "句式多样性得分",
                    "advanced_vocabulary": "高级词汇使用得分"
                }},
                "logic_structure_score": {{
                    "total": "逻辑结构总得分",
                    "structural_coherence": "文章结构严谨性得分",
                    "paragraph_transition": "段落间过渡自然性得分"
                }},
                "grammar_format_score": {{
                    "total": "语法格式总得分",
                    "grammar_accuracy": "语法正确性得分",
                    "formal_writing": "书面语规范性得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        # 调用 GPT 模型
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "你是一个专业的俄语作文评分助手。"},
                {"role": "user", "content": prompt}
            ],
            max_tokens=700,
            temperature=0.7,
        )

        # 解析返回的 JSON 结果
        result_text = response.choices[0].message.content

        # 提取 JSON 部分（找到第一个 "{" 和 最后一个 "}"）
        json_match = re.search(r'\{.*\}', result_text, re.DOTALL)

        if json_match:
            json_text = json_match.group(0)  # 提取 JSON 内容
            print("【GPT评分】模型返回 JSON 内容：", json_text)

            # 解析 JSON
            try:
                result = json.loads(json_text)
                print("【GPT评分】解析后的 JSON：", result)
            except json.JSONDecodeError as e:
                print("【GPT评分】JSON 解析失败：", e)
        else:
            print("【GPT评分】未找到 JSON 格式数据")
        overall_score = float(result.get("overall_score", 0))

        # 组织返回数据
        if modelName == "CRT-4（ТРКИ-1 / B1级）评分模型":
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "content_integrity_score": result.get("content_integrity_score", {}),
                    "language_accuracy_score": result.get("language_accuracy_score", {}),
                    "logic_coherence_score": result.get("logic_coherence_score", {}),
                    "format_norms_score": result.get("format_norms_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }
        elif modelName == "CRT-6（ТРКИ-2 / B2级）评分模型":
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "content_depth_complexity_score": result.get("content_depth_complexity_score", {}),
                    "language_richness_score": result.get("language_richness_score", {}),
                    "logic_structure_score": result.get("logic_structure_score", {}),
                    "grammar_format_score": result.get("grammar_format_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }


    except Exception as e:
        print("【GPT评分--俄语模型】作文评分失败：", e)
        return {"score": 0, "message": "评分失败，发生错误", "details": None}


# 【3.1.1-5】西班牙语评分模型 （不同维度）
API_SECRET_KEY = "sk-zk225bfec571f860d1c68353ff237a6c63d6755d59ce560a"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)


def score_essay_chatgpt_SPAIN2(text, language, modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        if modelName == "DELE评分模型":
            prompt = f"""
                请对以下西班牙语作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 话语体裁（0-30分）
                  - 是否论证合理，条理清晰，论点突出（0-15分）
                  - 是否考虑了收信人的情况，符合体裁的风格和惯例（0-15分）

                2. 连贯性（0-30分）
                  - 文章是否清晰、连贯（0-15分）
                  - 结构是否合理（0-15分）

                3. 准确性（0-20分）
                  - 语法、拼写、词汇使用是否正确（0-20分）

                4. 拓展性（0-20分）
                  - 语汇量是否丰富（0-10分）
                  - 是否熟练掌握惯用语与口语表达方式（0-10分）

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，返回结果必须以花括号作为开头，不允许包含任何额外的解释、说明或标记（如 `json`）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "discourse_genre_score": {{
                    "total": "话语体裁总得分",
                    "argument_clarity": "论证合理性与条理清晰度得分",
                    "genre_appropriateness": "体裁风格与惯例符合度得分"
                }},
                "coherence_score": {{
                    "total": "连贯性总得分",
                    "text_clarity": "文章清晰度得分",
                    "structural_reasonability": "结构合理性得分"
                }},
                "accuracy_score": {{
                    "total": "准确性总得分",
                    "grammar_spelling_vocabulary": "语法、拼写、词汇正确性得分"
                }},
                "expansion_score": {{
                    "total": "拓展性总得分",
                    "vocabulary_richness": "语汇量丰富度得分",
                    "idiomatic_usage": "惯用语与口语表达熟练度得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        # 调用 GPT 模型
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "你是一个专业的西班牙语作文评分助手。"},
                {"role": "user", "content": prompt}
            ],
            max_tokens=700,
            temperature=0.7,
        )

        # 解析返回的 JSON 结果
        result_text = response.choices[0].message.content

        # 提取 JSON 部分（找到第一个 "{" 和 最后一个 "}"）
        json_match = re.search(r'\{.*\}', result_text, re.DOTALL)

        if json_match:
            json_text = json_match.group(0)  # 提取 JSON 内容
            print("【GPT评分】模型返回 JSON 内容：", json_text)

            # 解析 JSON
            try:
                result = json.loads(json_text)
                print("【GPT评分】解析后的 JSON：", result)
            except json.JSONDecodeError as e:
                print("【GPT评分】JSON 解析失败：", e)
        else:
            print("【GPT评分】未找到 JSON 格式数据")
        overall_score = float(result.get("overall_score", 0))

        # 组织返回数据
        if modelName == "DELE评分模型":
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "discourse_genre_score": result.get("discourse_genre_score", {}),
                    "coherence_score": result.get("coherence_score", {}),
                    "accuracy_score": result.get("accuracy_score", {}),
                    "expansion_score": result.get("expansion_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }

    except Exception as e:
        print("【GPT评分--西班牙语模型】作文评分失败：", e)
        return {"score": 0, "message": "评分失败，发生错误", "details": None}


# 【3.1.1-6】日语评分模型（不同维度）
API_SECRET_KEY = "sk-zk225bfec571f860d1c68353ff237a6c63d6755d59ce560a"  # 替换为你的实际 API 密钥
BASE_URL = "https://api.zhizengzeng.com/v1/"  # 替换为正确的 base URL

# 初始化 OpenAI 客户端
client = OpenAI(api_key=API_SECRET_KEY, base_url=BASE_URL)


def score_essay_chatgpt_JAPAN2(text, language, modelName):
    """
    使用 GPT 模型对输入的英文作文进行评分，并提供好词好句及修改建议
    :param text: 原始英文作文（字符串）
    :return: 作文评分（0-100分）、详细的评分指标、好词好句和修改建议
    """
    try:
        # 检查输入文本是否有效
        if not text or not isinstance(text, str):
            return {"score": 0, "message": "文本内容无效，无法评分", "details": None}

        if modelName == "CJT-4评分模型":
            prompt = f"""
                请对以下日语作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。


                【评分标准】

                1. 内容（0-40分）
                  - 内容切题度（0-20分）
                  - 内容完整性（0-20分）

                2. 语言表达（0-30分）
                  - 句式多样（0-15分）：采用复合句、分词短语等
                  - 语法使用是否正确（0-15分）

                3. 逻辑连贯（0-30分）
                  - 文章结构是否严谨（0-15分）：引言、主体、结论完整
                  - 段落间过渡是否自然（0-15分）

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，不允许包含任何额外的解释、说明或标记（如 `json`）。包含以下字段：
            1. 三项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_score": {{
                    "total": "内容总得分",
                    "relevance": "内容切题度得分",
                    "completeness": "内容完整性得分"
                }},
                "language_expression_score": {{
                    "total": "语言表达总得分",
                    "sentence_variety": "句式多样性得分",
                    "grammar_accuracy": "语法正确性得分"
                }},
                "logical_coherence_score": {{
                    "total": "逻辑连贯总得分",
                    "structural_integrity": "文章结构严谨性得分",
                    "paragraph_transition": "段落间过渡自然性得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        elif modelName == "CJT-6评分模型":
            prompt = f"""
                请对以下日语作文进行评分，并根据以下四个大项评分，每个大项满分25分，总分为100分。请确保每个大项的评分由4个具体小项组成，并分别给出每个小项的得分。

                【评分标准】

                1. 内容完整性（0-30分）
                   - 内容是否完整（0-15分）
                   - 是否清晰表达文章中心主旨（0-15分）

                2. 语言准确性（0-30分）
                   - 语法是否正确（0-15分）
                   - 拼写与词汇使用是否准确（0-15分）

                3. 逻辑与结构（0-20分）
                   - 段落结构是否清晰（0-10分）
                   - 是否使用连接词使行文流畅（0-10分）

                4. 表达丰富性（0-20分）
                   - 句式是否多样（0-10分）（如复合句、被动形、使役形）
                   - 是否使用高级词汇（0-10分）

            【输出要求】
            请严格返回JSON格式，只能返回一个纯净的JSON对象，返回结果必须以花括号作为开头，不允许包含任何额外的解释、说明或标记（如 `json`）。包含以下字段：
            1. 四项评分详情（含小项得分）
            2. 三处优秀表达（需保留原文）
            3. 每条优秀表达的原因分析（引用原文时保留原语言，分析时使用{language}）
            4. 三条具体修改建议（使用{language}）

            【JSON模板】
            {{
                "content_integrity_score": {{
                    "total": "内容完整性总得分",
                    "completeness": "内容完整性得分",
                    "main_idea_clarity": "中心主旨清晰度得分"
                }},
                "language_accuracy_score": {{
                    "total": "语言准确性总得分",
                    "grammar_correctness": "语法正确性得分",
                    "spelling_vocabulary": "拼写与词汇使用正确性得分"
                }},
                "logic_structure_score": {{
                    "total": "逻辑与结构总得分",
                    "paragraph_clarity": "段落结构清晰度得分",
                    "cohesion": "连接词使用流畅度得分"
                }},
                "expression_richness_score": {{
                    "total": "表达丰富性总得分",
                    "sentence_variety": "句式多样性得分",
                    "advanced_vocabulary": "高级词汇使用得分"
                }},
                "overall_score": "总评分",
                "excellent_expressions": [
                    {{
                        "quote": "原文摘录1",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录2",
                        "reason": "使用{language}说明优秀原因"
                    }},
                    {{
                        "quote": "原文摘录3",
                        "reason": "使用{language}说明优秀原因"
                    }}
                ],
                "suggestions": [
                    "具体修改建议1",
                    "具体修改建议2",
                    "具体修改建议3"
                ]
            }}

            【作文内容】
            {text}
            """

        # 调用 GPT 模型
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "你是一个专业的日语作文评分助手。"},
                {"role": "user", "content": prompt}
            ],
            max_tokens=700,
            temperature=0.7,
        )

        result_text = response.choices[0].message.content

        # 提取 JSON 部分（找到第一个 "{" 和 最后一个 "}"）
        json_match = re.search(r'\{.*\}', result_text, re.DOTALL)

        if json_match:
            json_text = json_match.group(0)  # 提取 JSON 内容
            print("【GPT评分】模型返回 JSON 内容：", json_text)

            # 解析 JSON
            try:
                result = json.loads(json_text)
                print("【GPT评分】解析后的 JSON：", result)
            except json.JSONDecodeError as e:
                print("【GPT评分】JSON 解析失败：", e)
        else:
            print("【GPT评分】未找到 JSON 格式数据")
        overall_score = float(result.get("overall_score", 0))

        # 组织返回数据
        if modelName == "CJT-4评分模型":
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "content_score": result.get("content_score", {}),
                    "language_expression_score": result.get("language_expression_score", {}),
                    "logical_coherence_score": result.get("logical_coherence_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }
        elif modelName == "CJT-6评分模型":
            return {
                "score": round(overall_score, 2),
                "message": "评分成功",
                "details": {
                    "content_integrity_score": result.get("content_integrity_score", {}),
                    "language_accuracy_score": result.get("language_accuracy_score", {}),
                    "logic_structure_score": result.get("logic_structure_score", {}),
                    "expression_richness_score": result.get("expression_richness_score", {}),
                    "excellent_expressions": result.get("excellent_expressions", []),
                    "suggestions": result.get("suggestions", [])
                },
                "model_used": modelName
            }


    except Exception as e:
        print("【GPT评分--日语模型】作文评分失败：", e)
        return {"score": 0, "message": "评分失败，发生错误", "details": None}